package com.model;

/**
 * @author Erik
 * 2017-08-12
 * @param 学科名称
 * @param 学科编号
 * @param 学科学制年限
 * @param 学生数组
 * @param 学生数量
 *
 */
public class Subject {
    private String subjectName;
    private String  subjectNo;
    private int subjectLife;
    private Student[] myStudents;
    private int studentNum;

    //No-Argument constructor
    public Subject(){}

    /**
     *三参数构造，实现对名称、编号、年限的初始化
     * @param 学科名称
     * @param 学科编号
     * @param 学科学制年限
     */
    public Subject(String subjectname,String subjectno,int subjectlife){
        this.setSubjectName(subjectname);
        this.setSubjectNo(subjectno);
        this.setSubjectLife(subjectlife);
    }

    /**
     * 四参数构造，实现对所有参数的初始化
     * @param 学科名称
     * @param 学科编号
     * @param 学科学制年限
     * @param 学生数组
     */

    public Subject(String subjectname,String subjectno,int subjectlife,Student[] myStudent){
        this.setSubjectName(subjectname);
        this.setSubjectNo(subjectno);
        this.setSubjectLife(subjectlife);
        this.setMyStudents(myStudent);
    }

    //set methods
    public void setSubjectName(String subjectname)  {   this.subjectName=subjectname;}
    public void setSubjectNo(String subjectno)      {   this.subjectNo=subjectno;}
    public void setSubjectLife(int subjectlife)
    {
        if(subjectlife<=0)  return;
        this.subjectLife=subjectlife;
    }

    public void setMyStudents(Student[] myStudents) {
        this.myStudents = myStudents;
    }

    //get methods
    public String getSubjectName()  {   return this.subjectName;    }
    public String getSubjectNo()    {   return this.subjectNo;      }
    public int getSubjectLife()     {   return  this.subjectLife;   }

    /**
     * 安全返回成员数组
     * @return  学生数组
     */
    public Student[] getMyStudents() {

        if(this.myStudents==null)
            this.myStudents=new Student[255];
        return myStudents;
    }

    public int getStudentNum() {
        return studentNum;
    }

    //methos

    /**
     * 专业基本信息输出
     * @return 名称、编号、年限
     */
    public String info(){
        String infomation=  "专业名称：    "     +this.getSubjectName()
                            +"\n专业编号：   "   +this.getSubjectNo()
                            +"\n学制年限：   "   +this.getSubjectLife();
        return infomation;
    }


    public void addStudent(Student stu){
        /*
         * TODO 添加学生并统计
         * 加入学生
         * 数量递增
         */

        //添加学生
        for(int i=0;i<this.getMyStudents().length;i++) {
            if (this.getMyStudents()[i] == null) {
                stu.setStudentSubject(this); //学生关联专业
                this.getMyStudents()[i]=stu; //专业关联学生
                this.studentNum = i + 1;
                return ;
            }
        }
    }
}
